#pragma once

#include <vector>
#include <string>
#include <cstdint>

namespace sysmonitor {
namespace filesystem {

// 磁盘分区信息结构体
struct DiskPartition {
    std::string name;             // 磁盘设备名（如 "/dev/sda1"）
    std::string mountPoint;       // 挂载点（如 "/"）
    std::string type;             // 文件系统类型（如 "ext4"、"xfs"）
    uint64_t totalSize = 0;       // 总大小(B)
    uint64_t freeSize = 0;        // 空闲大小(B)
    uint64_t usedSize = 0;        // 已用大小(B)
    double usedPercentage = 0.0;  // 使用率(%)
  
    // 格式化输出信息
    std::string toString() const;
};

// 获取所有磁盘分区信息
std::vector<DiskPartition> getDiskPartitions();

// 根据挂载点获取指定磁盘分区信息
DiskPartition getPartitionByMountPoint(const std::string& mountPoint);

} // namespace filesystem
} // namespace sysmonitor

